#ifndef IMAGE_H
#define IMAGE_H 1

#include "ImageSlice.h"

#include <string>

using namespace std;

class Image {

 public:

  Image();
  Image(const string &filename);

  virtual ~Image();

  const string &getFilename();

  int getNrows();
  int getNcols();

  float **getPixels();
  float getPixel(int row, int col);
  void setPixel(int row, int col, float value);

  ImageSlice *getColumn(int col);
  ImageSlice *getColumn(int col, int avgCols);
  ImageSlice *getRow(int row);
  ImageSlice *getRow(int row, int avgRows);

 protected:

  string filename;
  float **pixels;
  int nRows;
  int nCols;

  void setFilename(const string &filename);
  void setNrows(int nRows);
  void setNcols(int nCols);

};

#endif /* !_IMAGE_H */
